package com.tedu.api.thread;

/**
 * 3.了解线程的常用方法：结合Lambda
 *   setPriority() 基本线程API  获取线程优先级：1~10   默认：5
 *   getPriority() 常用线程API  设置线程优先级
 *   使用方法：setPriority(1~10) 数值越大，线程执行优先级别越高
 *           getPriority(Thread.MAX_PRIORITY)
 *           Thread线程类--提供常量：表示优先级：最大跟最小
 * 需求：创建一个线程-->lambda-->Thread线程
 *      每个线程中实现for循环：1000次
 *                        老大一声吼，地球抖三抖  max
 *                        老二一出手，蚊子全飞走  normal
 *                        老三一张口，笑到一群牛  min
 *
 * 线程的优先级决定：优先级数值越大，几率越高，而不是最终结果
 * 结论：三个线程，同时执行了1000次的输出语句【同时的过程就是并发】
 *      线程原则上可以指定优先级，不能主动获取CPU时间外，也不
 *      能决定时间片的长度，只能被动分配，指定优先级只是最大程度
 *      上改变CPU时间片获取线程几率！
 *   理论上：线程优先级越高，CPU时间片获取次数越高！
 */
public class Thread_Priority {
    public static void main(String[] args) {
        //创建max线程
        Thread max=new Thread(()->{for(int i=0;i<1000;i++){
            System.out.println("老大一声吼，地球抖三抖 ");
        }} );

        //创建normal线程
        Thread normal=new Thread(()->{for(int i=0;i<1000;i++){
            System.out.println("老二一出手，蚊子全飞走 ");
        }} );

        ////创建min线程
        Thread min=new Thread(()->{for(int i=0;i<1000;i++){
            System.out.println("老三一张口，笑到一群牛 ");
        }} );
        min.setPriority(1);//设置优先级：1.有几率最后执行
        max.setPriority(Thread.MAX_PRIORITY);//设置最大，最小优先级
        //启动线程
        max.start();//优先级   默认5
        normal.start();
        min.start();
    }
}
